Operatorul UNION este utilizat pentru a combina setul de rezultate din două sau mai multe instrucțiuni SELECT.
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2
Operatorul UNION selectează implicit numai valori distincte. Pentru a permite valori duplicate, utilizați UNION ALL:
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2
În acest tutorial vom folosi celebrul exemplu de bază de date „Northwind”.
Mai jos este o mostră din tabelul „Customers” („Clienți”):
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 5021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 5023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
Și eșantionul din tabelul „Suppliers” („Furnizori”):
SupplierID | SupplierName | ContactName | Address | City | PostalCode | Country | Phone |
---|---|---|---|---|---|---|---|
1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | Londona | EC1 4SD | UK | (171) 555-2222 |
2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA | (100) 555-4822 |
3 | Grandma Kelly's Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA | (313) 555-5735 |
4 | Tokyo Traders | Yoshi Nagase | 9-8 Sekimai Musashino-shi | Tokyo | 100 | Japan | (03) 3555-5011 |
5 | Cooperativa de Quesos 'Las Cabras' | Antonio del Valle Saavedra | Calle del Rosal 4 | Oviedo | 33007 | Spain | (98) 598 76 54 |
Următoarea instrucțiune SQL selectează orașe (numai valori diferite) din tabelele Clienți și Furnizori:
Run SQLSELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City
Următoarea instrucțiune SQL selectează orașe (de asemenea, valori duplicate) din ambele tabele Clienți și Furnizori:
Run SQLSELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City
Următoarea instrucțiune SQL selectează orașele germane (numai cu valori diferite) din ambele tabele Clienți și Furnizori:
Run SQLSELECT City, Country FROM Customers
WHERE Country = 'Germany'
UNION
SELECT City, Country FROM Suppliers
WHERE Country = 'Germany'
ORDER BY City
Următoarea instrucțiune SQL selectează orașele germane (de asemenea, valori duplicate) din ambele tabele Clienți și Furnizori:
Run SQLSELECT City, Country FROM Customers
WHERE Country = 'Germany'
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country = 'Germany'
ORDER BY City
Următoarea instrucțiune SQL listează toți clienții și furnizorii:
Run SQLSELECT 'Customer' AS Type, ContactName, City, Country
FROM Customers
UNION
SELECT 'Supplier', ContactName, City, Country
FROM Suppliers
Rețineți că „AS Type” de mai sus este un alias. Aliasurile SQL sunt folosite pentru a da unui tabel sau coloană un nume temporar. Aliasul există doar pe durata solicitării. Deci, aici am creat o coloană temporară numită „Type” care indică dacă persoana de contact este „Client” sau „Vânzător”.